The present invention relates to NAND-Flash identification, and more particularly, to a method and system capable of identifying NAND-Flash without requiring the reading of the NAND-Flash device ID.
Two primary technologies have dominated the non-volatile flash memory market place. These two technologies are called NOR-Flash memory and NAND-Flash memory. NOR-Flash memory was first introduced around 1988. At that time, NOR-Flash revolutionized its market. In prior years, the market had been dominated by EPROM and EEPROM solutions. NOR-Flash typically enables higher read performance than NAND-Flash. As a result, NOR-Flash has usually been utilized for such applications as code storage and execution. NOR-Flash is often utilized in consumer electronic devices such as: low-end cell phones, embedded applications, and simple consumer electronic products.
The NAND-Flash memory architecture was introduced by Toshiba in 1989. NAND-Flash memory is suitable for many forms of file storage. It is currently utilized in some of the most popular consumer electronic devices. In the consumer electronics market place NAND-Flash is utilized by MP3 players, USB flash drives, digital camera memory cards, and many other devices. NAND-Flash memory was designed for high capacity, low cost, and fast responsive performance. Additionally, NAND-Flash offers many other benefits. NAND-Flash is typically less expensive than NOR flash, NAND-Flash has very high cell densities, NAND-Flash is available in many much larger capacities, NAND-Flash is capable of faster write and erase performance than NOR-Flash. As a result, it has been an obvious choice to utilize NAND-Flash memory for data storage applications in the consumer electronic devices mentioned above.
The NAND-Flash architecture is not accessed in the same manner as other general memory devices. NAND-Flash reading requires that the system knows the exact configuration of the NAND-Flash. Utilizing the exact NAND-Flash configuration information is imperative for data reading and writing. Generally, the NAND-Flash architecture is organized as a memory array having a plurality of blocks. For example, what is referred to as a small sized NAND-Flash may be described as a device having a capacity equaling 8 MB, 16 MB, 32 MB, or 64 MB, while what is referred to as a large sized NAND-Flash may be described as a device having a capacity equaling 128 MB, 256 MB, 512 MB, or 1 GB. As to the small sized NAND-Flash, each block is consisted of 16 pages, and each page is divided into a data area having 512 bytes and a spare area having 16 bytes. As to the large sized NAND-Flash, each block is consisted of 64 pages, and each page is divided into a data area having 2048 bytes and a spare area having 64 bytes. Since the configuration of the small sized NAND-Flash is different from that of the large sized NAND-Flash, parameters applied to accessing data stored in a page vary from NAND-Flash to NAND-Flash. That is, if a system is unable to correctly recognize its installed NAND-Flash, data accessing of the NAND-Flash is sure to fail.
It is well known that a system that utilizes NAND-Flash must maintain a static device ID table to access the NAND-Flash. The device ID table is utilized for easily identifying the type of NAND-Flash. The device ID table of pre-defined data typically contains information such as: a total size, a total block size, a page size, I/O interface bits, address bytes, and a type of ECC (e.g., 1 bit or 4 bits). The table is required since reading and writing to and from NAND-Flash, as mentioned above, requires knowing the exact NAND-Flash configuration.
Conventional systems that utilize NAND-Flash identify the exact type of NAND-Flash utilizing the static device ID table. Unfortunately, this conventional method of NAND-Flash identification may not be the most effective solution. A first deficiency with the conventional NAND-Flash identification method is that for devices to utilize new NAND-Flash as new vendors and existing vendors release new sizes and new specifications of NAND-Flash, the conventional system requires that the static device ID table be maintained current with the industry's NAND-Flash products. Ensuring that the device ID table is up-to-date requires a non-trivial maintenance effort. A second deficiency with the conventional NAND-Flash identification method becomes obvious as more vendors release new NAND-Flash products. This forces the static device ID table that contains the NAND-Flash ID list to continually grow. This static device ID table must grow larger because the identification information about new NAND-Flash is continually added to the static device ID table. The growing static device ID table requires larger and larger memory capacities. As a result, it becomes necessary to utilize larger storage devices to store the static device ID table. The conventional method is to store the static device ID table in the BOOT code or on-chip ROM code. Storing the static device ID table in BOOT code or on-chip ROM code is already a costly configuration. This problem is further compounded because the static device ID table continues growing larger.
In view of the foregoing problems of identifying NAND-Flash it can be appreciated by one skilled in the art that a substantial need exists for a new and efficient method and apparatus that is capable of identifying a type of NAND-Flash and doing so without needing to read or access a conventional static NAND-Flash device ID table.